Filter

@VERO
Created Date · 2023년 06월 06일 02:06
Last Updated Date · 2023년 06월 06일 02:06

Filter란?

DispatcherServlet 처리 전 후에 동작하여 사용자의 요청이나 응답의 최전방에 존재한다. Java Servlet에서 제공된다. 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 부가 작업을 처리할 수 있는 기능을 제공한다.

스프링 빈으로 등록될 수 있다.

Filter의 메서드

Filter 인터페이스를 구현해야 필터를 추가할 수 있다.

 public interface Filter {  
  
    public default void init(FilterConfig filterConfig) throws ServletException {}  
  
    public void doFilter(ServletRequest request, ServletResponse response,  
            FilterChain chain) throws IOException, ServletException;  
  
    public default void destroy() {}  
}

init() : 필터가 웹 컨테이너에 생성될 때 실행된다. doFilter() : Request, Response가 필터를 거칠 때 수행되는 메서드로, 체인을 따라 다음에 존재하는 필터로 이동한다. url 패턴에 맞는 모든 HTTP 요청이 DispatcherServlet 으로 전달되기 전에 웹 컨테이너에 의해 실행된다. destroy() : 필터가 소멸될 때 실행된다.

용도

요청 파라미터 자체의 검증 및 처리를 담당한다.

  • 보안 관련 공통 작업: 필터는 웹 컨테이너에서 동작하므로 보안 검사를 통해 올바른 요청이 아닌 경우 차단할 수 있다. 스프링 컨테이너까지 요청이 전달되지 않고 차단되므로 안정성을 높일 수 있다.
  • 모든 요청에 대한 로깅
  • 이미지 / 데이터 압축 및 문자열 인코딩: 웹 애플리케이션에서 전반적으로 사용되는 기능을 구현한다.

참고